por Lieby Cardoso

Este conjunto de dados foi simulado e disponibilizado por Ludovic Benistant para o site Kaggle. Fonte: Kaggle - Ludovic Benistant - Hr Analytics

Atributos:

  1. satisfaction_level: Nível de satisfação do colaborador
  2. last_evaluation: Nota da última avaliação
  3. number_project: Número de projetos trabalhados
  4. average_montly_hours: Média mensal de horas trabalhadas
  5. time_spend_company: Anos de trabalho na empresa
  6. Work_accident: 0 - Não teve acidente de trabalho e 1 - Teve acidente de trabalho
  7. left: Indicador de demissão, 0 - Contratado e 1 - Desligado
  8. promotion_last_5years: Indicativo de promoção, 0 - Não e 1 - Sim
  9. sales: Departamento
  10. salary: Classificação do salário, Baixo, Médio e Alto

Objetivo O objetivo deste projeto é explorar as variáveis do conjunto de dados hr que podem auxiliar na identificação dos fatores que levaram alguns funcionários a deixarem a empresa. Durante a investigação estas perguntas serão respondidas:

  1. Porque eles saem?
  2. Será que é perceptível a instatisfação do funcionário?
  3. Os colaboradores que saíram recebiam baixo salário?
##  [1] "satisfaction_level"    "last_evaluation"      
##  [3] "number_project"        "average_montly_hours" 
##  [5] "time_spend_company"    "Work_accident"        
##  [7] "left"                  "promotion_last_5years"
##  [9] "sales"                 "salary"

** Visão Geral dos dados**

Sumário das informações:

##  satisfaction_level last_evaluation  number_project  average_montly_hours
##  Min.   :0.0900     Min.   :0.3600   Min.   :2.000   Min.   : 96.0       
##  1st Qu.:0.4400     1st Qu.:0.5600   1st Qu.:3.000   1st Qu.:156.0       
##  Median :0.6400     Median :0.7200   Median :4.000   Median :200.0       
##  Mean   :0.6128     Mean   :0.7161   Mean   :3.803   Mean   :201.1       
##  3rd Qu.:0.8200     3rd Qu.:0.8700   3rd Qu.:5.000   3rd Qu.:245.0       
##  Max.   :1.0000     Max.   :1.0000   Max.   :7.000   Max.   :310.0       
##                                                                          
##  time_spend_company Work_accident         left       
##  Min.   : 2.000     Min.   :0.0000   Min.   :0.0000  
##  1st Qu.: 3.000     1st Qu.:0.0000   1st Qu.:0.0000  
##  Median : 3.000     Median :0.0000   Median :0.0000  
##  Mean   : 3.498     Mean   :0.1446   Mean   :0.2381  
##  3rd Qu.: 4.000     3rd Qu.:0.0000   3rd Qu.:0.0000  
##  Max.   :10.000     Max.   :1.0000   Max.   :1.0000  
##                                                      
##  promotion_last_5years         sales         salary    
##  Min.   :0.00000       sales      :4140   high  :1237  
##  1st Qu.:0.00000       technical  :2720   low   :7316  
##  Median :0.00000       support    :2229   medium:6446  
##  Mean   :0.02127       IT         :1227                
##  3rd Qu.:0.00000       product_mng: 902                
##  Max.   :1.00000       marketing  : 858                
##                        (Other)    :2923

Os dados são consistentes e analisando o valor mínimo, médio, mediana e valor máximo, não foi possível encontrar outliers.

Vamos conferir qual a estrutura dos dados, e se necessário alterar alguns tipos para auxiliar a análise.

str(hr)
## 'data.frame':    14999 obs. of  10 variables:
##  $ satisfaction_level   : num  0.38 0.8 0.11 0.72 0.37 0.41 0.1 0.92 0.89 0.42 ...
##  $ last_evaluation      : num  0.53 0.86 0.88 0.87 0.52 0.5 0.77 0.85 1 0.53 ...
##  $ number_project       : int  2 5 7 5 2 2 6 5 5 2 ...
##  $ average_montly_hours : int  157 262 272 223 159 153 247 259 224 142 ...
##  $ time_spend_company   : int  3 6 4 5 3 3 4 5 5 3 ...
##  $ Work_accident        : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ left                 : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ promotion_last_5years: int  0 0 0 0 0 0 0 0 0 0 ...
##  $ sales                : Factor w/ 10 levels "accounting","hr",..: 8 8 8 8 8 8 8 8 8 8 ...
##  $ salary               : Factor w/ 3 levels "high","low","medium": 2 3 3 2 2 2 2 2 2 2 ...

O conjunto de dados é composto por 14.999 observações e 10 variáveis. Não tem nenhuma variável que seja uma identificação única do colaborador, então vamos considerar que cada registro corresponde a uma pessoa, sem repetição.

As variáveis sales e salary são do tipo factor, vou criar duas variáveis não categoricas baseadas nelas. Essas duas variáveis serão utilizadas posteriormente no cálculo da correlação.

# Cria variável salary_le, versão numéricas de salary
hr$salary_le = c("high"=0, "low"=1, "medium"=2)[as.numeric(hr$salary)]

# Cria variável sales_le, versão numéricas de sales
hr$sales_le = c("accounting"=0, "hr"=1, "IT"=2, "management"=3,  "marketing"=4,  "product_mng"=5, "RandD"=6, "sales"=7, "support"=8, "technical"=9)[as.numeric(hr$sales)] 

O nível de satisfação do funcionário será agrupado em três níveis: SIM, NÂO e Satisfação REGULAR.

# Cria novo campo satisfied no conjunto de dados hr
hr$satisfied <- as.factor(ifelse(hr$satisfaction_level<=.40, "NAO", ifelse(hr$satisfaction_level<=.70, "REGULAR", "SIM")))

Conferindo os campos criados:

table(hr$salary_le)
## 
##    0    1    2 
## 1237 7316 6446
table(hr$sales_le)
## 
##    0    1    2    3    4    5    6    7    8    9 
##  767  739 1227  630  858  902  787 4140 2229 2720
table(hr$satisfied)
## 
##     NAO REGULAR     SIM 
##    3124    5577    6298

Será que existem valores núlos? Vamos percorrer todas as variáveis somando todos os valores nulos.

# Verifica o total de NA em cada campo
for (i in 1:9) {
  print (paste(names(hr[i]) , sum(is.na(hr[i])), sep="="))
  next
  
}
## [1] "satisfaction_level=0"
## [1] "last_evaluation=0"
## [1] "number_project=0"
## [1] "average_montly_hours=0"
## [1] "time_spend_company=0"
## [1] "Work_accident=0"
## [1] "left=0"
## [1] "promotion_last_5years=0"
## [1] "sales=0"

O conjunto de dados está completamente preenchido e não será necessário excluir o valores nulos através do comando abaixo:

Seção de Gráficos Univariados

Como é a empresa?

Em média as pessoas trabalham 200 horas mensalmente, a maioria das pessoas trabalha entre 130 e 270 horas. No Brasil trabalha-se aproximadamente 220 horas mensais, então é bem razoável a distribuição do tempo.

A empresa tem alguns colaboradores que trabalham por mais de 7 anos, mas o mais comum é passar entre 2 e 4 anos.

Perfil dos funcionários

Para facilitar a comparação, agrupei as informações entre contratados e demitidos. O fato de ter recebido ou não promoção nos últimos anos não variou de maneira significativa entre os dois grupos.

O maior grupo de satisfeitos está entre os que ainda estão contratados, apesar de terem colaboradores com uma satisfação baixa, o maior pico de insatisfeitos está entre os desligados. Alguns funcionários com um nível alto de satisfação deixaram a empresa, e isto será investigado no decorrer deste projeto.

A distribuição da nível de satisfação e da nota da última avaliação é bem similar nos dois grupos. Uma observação interessante é que colaboradores bem avaliados deixaram a empresa.

# Agrupa o total de resultados por departamento
Funcionarios_departamento <- aggregate(hr$sales, by=list(hr$sales) ,FUN = length)
formattable(Funcionarios_departamento, list(
            x = color_tile("white", "#6699CC")))
Group.1 x
accounting 767
hr 739
IT 1227
management 630
marketing 858
product_mng 902
RandD 787
sales 4140
support 2229
technical 2720

Os departamentos support, technical e sales são os mais populosos da empresa, com 9089 colaboradores no total.

Análise Univariada

Qual é a estrutura do conjunto de dados?

A estrutura de dados é composta por 14.999 observações, 10 variáveis importadas com o arquivo original, mais duas várias criadas para contabilização.

A variável left representa os colaboradores que ainda estão na empresa com o valor 0 e 1 para colaboradores desligados.

A maioria das variáveis são númericas e duas são categóricas representadas por fatores: sales com 10 níveis e salary com 3.

Quais são os principais atributos de interesse deste conjunto de dados?

A principal variável de interesse do conjunto é left, que informa se o colaborador está na empresa ou se foi desligado. A variável com o nível de satisfação (satisfaction_level) também será foco da análise, uma vez que, a correlação das outras variáveis com ela podem ajudar a compreender a os motivos que levaram as pessoas a deixarem a empresa.

Quais outros atributos você acha que podem lhe auxiliar na investigação destes atributos de interesse?

promotion_last_5years: O total de promoções recebidas (promotion_last_5years) pode gerar uma insatisfação no colaborador se ele supor que não foi reconhecido; time_spend_company: O tempo passado numa empresa pode gerar uma necessidade de sair da empresa, nem sempre por uma causa negativa, mas pela vontade de viver novos desafios; salary: Essa variável é categorica com os valores baixo, médio e alto. A relação da remuneração com o satisfação e a decisão de saída será avaliado, apesar de várias pesquisas indicarem que o salario nem sempre é um grande influenciador nesta decisão. É possível que variáveis como número de promoções e nota recebida na ultima avaliação pesem mais na sensação de ter o trabalho reconhecido e este é um fator importante. number_project: Essa variável não diz muita coisa, mas podemos supor que pessoas com mais números de projetos eram mais engajadas? sales: Será que tem um departamento problemático?

Você criou novas variáveis a partir dos atributos existentes no conjunto de dados?

O conjunto de dados estava bem consistente, as alterações realizadas foram para adaptar as informações para análise. Salary e Sales são do tipo factor, para elas criei duas novas variaveis, Salary_le e Sales_le para representa-las numericamente. É uma especíe de versão LabelEncoder de cada uma delas.

Foi criada a variável satisfied, do tipo factor com 3 níveis: SIM, NAO e REGULAR. O objetivo desse campo é facilitar na visualização das faixas de satisfação dos colaboradores. As faixas definidas para este projeto sem qualquer compromisso com valores padrões de um departamento de recursos humanos.

Dos atributos investigados, distribuições incomuns foram encontradas? Você aplicou operações nos dados para limpá-los, ajustá-los ou mudar a forma dos dados? Se sim, por quê?

Pesquisei variaveis NA, mas o grupo não tinha nenhuma. Variáveis sem conteúdo não foram pesquisadas porque na importação do arquivo eu atribui por padrão o valor NA para elas (na.strings=c(“”,“NA”)), então, automaticamente ao pesquisar por NA, eu já estava pesquisando pelas vazias.

Em alguns gráficos, transformei a variável left em factor para auxiliar o agrupamento dos dados em 0 e 1, e não na média destes dois números.

Observando o sumário das variáveis, os dados são consistentes e sem outliers, portanto não foi necessário manipular alguns valores.

Seção de Gráficos Bivariados

Agora que já conhecemos um poucos as variáveis do conjunto de dados, vamos verificar como elas se relacionam. Nesta seção tentaremos responder as perguntas descritas no ínicio do trabalho.

** Os colaboradores que saíram recebiam baixo salário **

Entre as pessoas que sairam temos todas as faixas de salário, o volume de pessoas com salário alto é menor e não está distribuido em todos os departamentos. Mas o gráfico já é suficiente para responder a pergunta, as pessoas que sairam recebiam, em sua maioria, um salário baixo ou médio.

Investigando um pouco mais o departamento, vamos ver a proporção de pessoas que sairam de cada uma deles.

# Cria um subgrupo de dados com a proporção dos colaboradores que deixaram cada departamento.
prop_left_sales <- data.frame(round(prop.table(table(hr$sales,hr$left), 1)*100,0))

# Altera o nome das colunas
colnames(prop_left_sales) <- c("Departamento", "left", "Frequencia")

# Transforma o conteúdo da variável left em coluna, e demonstra o valor de Freq para cada uma delas.
formattable(cast(prop_left_sales, Departamento ~ left, value="Frequencia"), list(
            "1" = color_tile("white", "#6699CC")))
Departamento 0 1
accounting 73 27
hr 71 29
IT 78 22
management 86 14
marketing 76 24
product_mng 78 22
RandD 85 15
sales 76 24
support 75 25
technical 74 26

Os departamentos de gerencia (management) e pesquisa e desenvolvimento (RandD) tiveram a menor evasão de colaboradores. Os outros departamentos tiveram entre 22 e 29%. Abaixo podemos ver esta distribuição:

Quando comparados, as pessoas que deixaram a empresa obtiveram uma mediana maior, principalmente no departamento RandD. No departamento de marketing e hr, as pessoas trabalharam entre 150 e 250h mas com uma mediana menor.

media_hora_departamento <- aggregate(hr$average_montly_hours, by=list(hr$sales, hr$left ) ,FUN = mean)


colnames(media_hora_departamento) <- c("Departamento", "left", "Media")

media_hora_departamento <- cast(media_hora_departamento, Departamento ~ left, value="Media")

colnames(media_hora_departamento) <- c("Departamento", "Contratado", "Desligado")

formattable(media_hora_departamento, list(
            Desligado = color_tile("gray", "red")))
Departamento Contratado Desligado
accounting 199.0373 207.0294
hr 199.2500 197.3070
IT 198.8868 213.8498
management 200.2338 207.2637
marketing 198.8885 200.9901
product_mng 197.7656 207.7879
RandD 198.9520 210.9752
sales 199.5717 205.0414
support 199.1410 205.6360
technical 198.4711 214.1836

Com exceção do departamento de recursos humanos (hr), os colaboradores que se desligaram da empresa trabalharam em média mais do que os dos outros departamentos, sempre mais de 200 horas por mês. Foi realçado em vermelho os casos em que o grupo de desligados trabalhou mais.

Sabemos que os colaboradores que se desligaram trabalharam por mais horas, será que eles conseguiram ficar por muito tempo na empresa?

Este gráfico trás uma informação interessante, de maneira geral as pessoas não saem da empresa no primeiro ano de trabalho. Os que saem, são os que trabalharam em média mais tempo por mês.O grupo de maior volume é formado por colaboradores que atuam na empresa a mais de 7 anos.

Que coisa, as pessoas que deixam a empresa não chegam a completar 5 anos de trabalho, os que permanecem na empresa chegaram a trabalhar por 10 anos.

Nós vemos uma insatisfação nos colaboradores que deixam a empresa no 3º ou 4º anos, aparentemente se você passa por essa fase, o nível de satisfação cresce, ficando acima de 0.75, mas mesmo assim, os colaboradores saem entre o 5º e 6º, e nunca atingem o 7º ano. O ideal para este caso é que tivessemos um histórico dos níveis de satisfação destas pessoas, ano após ano, assim conseguiriamos projetar em que anos a insatisfação aumenta e diminui.

será que há uma variação similar na nota de avaliação deste colaborador durante os anos trabalhados? Para descobrir isso, vamos ver a nota de avaliação por ano trabalhado:

O 3º ano parece um pouco crítico, não? Vimos no gráfico anterior que muitos dos que saíram demonstraram um nível de satisfação baixo, e neste gráfico percebemos que no 3º a maioria dos desligados receberam uma nota baixa na avaliação. Pode ser motivado por uma avaliação mais rigorosa da empresa após de 3 anos de trabalho, pode existir uma política específica para este período.

Do 4º ano em diante os desligados receberam em sua maioria uma boa nota na avaliação, em geral acima de 0.8.

Ter mais tempo de empresa não significa que o salário será melhor. Do sexto para o 10º ano a faixa salarial que prevalece é a média, mas como os que sairam não chegaram a completar 7 anos de trabalho, não é possível verificar se isso se repetiria para eles.

Mesmo tendo sofrido acidente de trabalho, os colaboradores permanecem na empresa.

Quem tem mais projetos trabalha mais? Sim. Na média, quem teve mais projetos trabalhou mais horas mensais. Faz bastante sentido que seja assim.

Através do cálculo da correlação entre as variáveis vamos verificar se os valores confirmam a impressão que temos dos dados até o momento.

##                       satisfaction_level last_evaluation number_project
## satisfaction_level            1.00000000     0.105021214   -0.142969586
## last_evaluation               0.10502121     1.000000000    0.349332589
## number_project               -0.14296959     0.349332589    1.000000000
## average_montly_hours         -0.02004811     0.339741800    0.417210634
## time_spend_company           -0.10086607     0.131590722    0.196785891
## Work_accident                 0.05869724    -0.007104289   -0.004740548
## left                         -0.38837498     0.006567120    0.023787185
## promotion_last_5years         0.02560519    -0.008683768   -0.006063958
## salary_le                     0.01175416     0.013964915    0.009671757
## sales_le                      0.01226082     0.006809655    0.019077888
##                       average_montly_hours time_spend_company
## satisfaction_level            -0.020048113       -0.100866073
## last_evaluation                0.339741800        0.131590722
## number_project                 0.417210634        0.196785891
## average_montly_hours           1.000000000        0.127754910
## time_spend_company             0.127754910        1.000000000
## Work_accident                 -0.010142888        0.002120418
## left                           0.071287179        0.144822175
## promotion_last_5years         -0.003544414        0.067432925
## salary_le                      0.007081960       -0.003086256
## sales_le                       0.007722204       -0.034825154
##                       Work_accident         left promotion_last_5years
## satisfaction_level      0.058697241 -0.388374983           0.025605186
## last_evaluation        -0.007104289  0.006567120          -0.008683768
## number_project         -0.004740548  0.023787185          -0.006063958
## average_montly_hours   -0.010142888  0.071287179          -0.003544414
## time_spend_company      0.002120418  0.144822175           0.067432925
## Work_accident           1.000000000 -0.154621634           0.039245435
## left                   -0.154621634  1.000000000          -0.061788107
## promotion_last_5years   0.039245435 -0.061788107           1.000000000
## salary_le              -0.002505606 -0.001293717          -0.001318425
## sales_le                0.011323553  0.009935740          -0.036953987
##                          salary_le     sales_le
## satisfaction_level     0.011754160  0.012260815
## last_evaluation        0.013964915  0.006809655
## number_project         0.009671757  0.019077888
## average_montly_hours   0.007081960  0.007722204
## time_spend_company    -0.003086256 -0.034825154
## Work_accident         -0.002505606  0.011323553
## left                  -0.001293717  0.009935740
## promotion_last_5years -0.001318425 -0.036953987
## salary_le              1.000000000  0.016429857
## sales_le               0.016429857  1.000000000
# Gera correlação e gráficos entre as variáveis numericas selecionadas
hr_ggpairs = hr[,c(1,2,3,4,5,6,7,8,11,12)]
g <- ggpairs(hr_ggpairs )
# Imprime a matriz com todos os gráficos em um arquivo svg. Retire o eval=FALSE para executar esta célula.
jpeg(filename = "gg.jpg")
print(g)
dev.off()
ggpair

ggpair

Para o contexto, a correlação entre left e satisfaction_level é a mais forte, mesmo não sendo tão forte de maneira geral.

with(hr, cor.test(left, satisfaction_level, method = 'pearson'))
## 
##  Pearson's product-moment correlation
## 
## data:  left and satisfaction_level
## t = -51.613, df = 14997, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.4018809 -0.3747001
## sample estimates:
##       cor 
## -0.388375

Análise Bivariada

Discuta sobre alguns dos relacionamentos observados nesta parte da investigação. Como os atributos de interesse variaram no conjunto de dados?

A variável left e os anos de trabalho de na empresa variam com o passar do tempo. O 3º ano parece ser o mais crítico, onde são registrados níveis de satisfação baixos, nos anos seguintes há um aumento e não foi registrada nenhuma saída após o colaborador completar 7 anos de casa.

As notas recebidas na avaliação também variam com o passar do tempo. No terceiro ano é registrado o maior volume de notas baixas entre os que deixaram a empresa, e os outros com mais tempo de trabalho, receberam boas notas em suas avaliações.

Boa parte dos que tiveram acidente de trabalho durante sua jornada permaneceram na empresa, há uma correlação muito fraca entre essas variáveis de -0.1546.

A medida que o número de projetos aumenta, também aumenta o média de horas trabalhadas por mês. E essa correlação é a mais forte do grupo sendo 0.4172.

Trabalhar por anos na empresa não está relacionado a um aumento da faixa de salário. Para aprofundar esta análise seria necessário saber o valor do salário recebido porque pode ter havido um aumento no valor, sem que isso significasse uma troca na faixa salarial (Baixo, Médio e ALto).

Você observou algum relacionamento interessante entre os outros atributos (os que não são de interesse)?

O relacionamento mais forte foi encontrado entre as variáveis número de projetos e média de horas trabalhadas. Não é claro se o total de projetos trabalhados corresponde a um período, por exemplo, são os projetos trabalhados no mês, no ano, desde a contratação? Supondo que seja mensal, faria todo sentido dizer que quem executou mais projetos, consequentemente pode ter tido que trabalhar mais horas no mês. Saber o nível de complexidade do projeto nos auxiliaria na interpretação da relação da quantidade de projetos e o tempo necessários para executá-lo.

Qual foi o relacionamento mais forte encontrado?

No que interessa a esta análise, que é investigar o porque alguns colaboradores deixaram a empresa, a variável nível de satisfação é a que tem a correlação mais forte com left, indicador de desligamento. Obteve-se o valor de correlação igual a -0.388375, ou seja, 40% dos desligamentos poderiam ser explicados pelo nível de satisfação, mas isso não significa que seja a causa dele.

Seção de Gráficos Multivariados

Porque os bons e satisfeitos estão nos deixando?

O primeiro passo é criar um dataset com os dados dos que vamos chamar de bons colaboradores que atendem aos determinados critérios: 1. Na última avaliação tiveram nota superior a 0.7; 2. Trabalharam na empresa por mais de 4 anos; 3. Trabalharam em mais de 5 projetos; 4. No mês, em média, trabalharam de 250 horas

## [1] 961

Não é nada surpreendente que as pessoas tenham saido da empresa, elas trabalharam mais pela mesma faixa de salário. Claro que para uma análise mais efetiva destas variáveis, seria necessário saber por exemplo, na faixa de altos salários se os valores são os mesmos, ou se os que trabalhavam mais recebiam uma quantia maior, mesmo sendo caracterizado como a mesma faixa.

Vamos fazer a mesma análise só que observando o total de projetos x horas trabalhadas.

Bem, esse gráfico nos leva às seguintes observações: 1. Nesta perspectiva os desligados continuam trabalhando por mais horas que os contratados; 2. As horas mensais trabalhadas entre os contratados varia quase que de maneira imperceptível independente do número de projetos. As pesssoas que trabalharam em 6 projetos, trabalharam entre 150 e 250 horas mensais da mesma forma que os que trabalharam em 2 projetos; 3. As pessoas que deixaram a empresa trabalharam mais horas por mês que os que ainda estão contratados. Para este grupo, mais projetos significou mais trabalho; 4. Os demitidos foram os únicos que trabalharam em 6 projetos ou mais.

** Será que é perceptível a instatisfação do funcionário? **

O que eu quero saber é se é a percepção que o colaborador tem de sí, ou seja, seu nível de satisfação, se relaciona de alguma forma com a forma como o empregador percebe o colaborador e atribui uma pontuação para isso através da avaliação.

## [1] 4605

nrow(hr_func_medianos %>%   filter(left==1))
## [1] 1551
nrow(hr_func_bons %>%   filter(left==1))
## [1] 851
cast(hr_func_bons, satisfied  ~ left, value = "salary")
## Aggregation requires fun.aggregate: length used as default
##   satisfied  0   1
## 1       NAO 59 845
## 2   REGULAR 28   3
## 3       SIM 23   3
table(hr$satisfied)
## 
##     NAO REGULAR     SIM 
##    3124    5577    6298
by(hr$left==1, hr$satisfied, summary)
## hr$satisfied: NAO
##    Mode   FALSE    TRUE    NA's 
## logical    1389    1735       0 
## -------------------------------------------------------- 
## hr$satisfied: REGULAR
##    Mode   FALSE    TRUE    NA's 
## logical    4674     903       0 
## -------------------------------------------------------- 
## hr$satisfied: SIM
##    Mode   FALSE    TRUE    NA's 
## logical    5365     933       0

m1 <- lm(left ~ satisfaction_level, data = hr)
m2 <- update(m1, ~ . + time_spend_company)
m3 <- update(m2, ~ . + average_montly_hours)
m4 <- update(m3, ~ . + number_project)
m5 <- update(m4, ~ . + promotion_last_5years)
mtable(m1, m2, m3, m4)
## 
## Calls:
## m1: lm(formula = left ~ satisfaction_level, data = hr)
## m2: lm(formula = left ~ satisfaction_level + time_spend_company, 
##     data = hr)
## m3: lm(formula = left ~ satisfaction_level + time_spend_company + 
##     average_montly_hours, data = hr)
## m4: lm(formula = left ~ satisfaction_level + time_spend_company + 
##     average_montly_hours + number_project, data = hr)
## 
## ====================================================================
##                            m1         m2         m3         m4      
## --------------------------------------------------------------------
##   (Intercept)            0.646***   0.526***   0.445***   0.501***  
##                         (0.009)    (0.012)    (0.017)    (0.018)    
##   satisfaction_level    -0.665***  -0.647***  -0.646***  -0.665***  
##                         (0.013)    (0.013)    (0.013)    (0.013)    
##   time_spend_company                0.031***   0.029***   0.033***  
##                                    (0.002)    (0.002)    (0.002)    
##   average_montly_hours                         0.000***   0.001***  
##                                               (0.000)    (0.000)    
##   number_project                                         -0.031***  
##                                                          (0.003)    
## --------------------------------------------------------------------
##   R-squared                  0.2        0.2        0.2        0.2   
##   adj. R-squared             0.2        0.2        0.2        0.2   
##   sigma                      0.4        0.4        0.4        0.4   
##   F                       2663.9     1450.7      985.3      773.5   
##   p                          0.0        0.0        0.0        0.0   
##   Log-likelihood         -7254.4    -7154.2    -7131.3    -7073.6   
##   Deviance                2310.4     2279.7     2272.8     2255.4   
##   AIC                    14514.8    14316.3    14272.6    14159.3   
##   BIC                    14537.7    14346.8    14310.7    14205.0   
##   N                      14999      14999      14999      14999     
## ====================================================================
m1 <- lm(satisfaction_level ~ salary, data = hr)
m2 <- update(m1, ~ . + time_spend_company)
m3 <- update(m2, ~ . + average_montly_hours)
m4 <- update(m3, ~ . + number_project)
m5 <- update(m4, ~ . + promotion_last_5years)
mtable(m1, m2, m3, m4, m5)
## 
## Calls:
## m1: lm(formula = satisfaction_level ~ salary, data = hr)
## m2: lm(formula = satisfaction_level ~ salary + time_spend_company, 
##     data = hr)
## m3: lm(formula = satisfaction_level ~ salary + time_spend_company + 
##     average_montly_hours, data = hr)
## m4: lm(formula = satisfaction_level ~ salary + time_spend_company + 
##     average_montly_hours + number_project, data = hr)
## m5: lm(formula = satisfaction_level ~ salary + time_spend_company + 
##     average_montly_hours + number_project + promotion_last_5years, 
##     data = hr)
## 
## ================================================================================
##                             m1         m2         m3         m4         m5      
## --------------------------------------------------------------------------------
##   (Intercept)             0.637***   0.703***   0.709***   0.749***   0.747***  
##                          (0.007)    (0.009)    (0.011)    (0.012)    (0.012)    
##   salary: low/high       -0.037***  -0.041***  -0.041***  -0.040***  -0.037***  
##                          (0.008)    (0.008)    (0.008)    (0.008)    (0.008)    
##   salary: medium/high    -0.016*    -0.019*    -0.018*    -0.017*    -0.016*    
##                          (0.008)    (0.008)    (0.008)    (0.008)    (0.008)    
##   time_spend_company                -0.018***  -0.017***  -0.014***  -0.014***  
##                                     (0.001)    (0.001)    (0.001)    (0.001)    
##   average_montly_hours                         -0.000      0.000***   0.000***  
##                                                (0.000)    (0.000)    (0.000)    
##   number_project                                          -0.030***  -0.030***  
##                                                           (0.002)    (0.002)    
##   promotion_last_5years                                               0.044**   
##                                                                      (0.014)    
## --------------------------------------------------------------------------------
##   R-squared                   0.0        0.0        0.0        0.0        0.0   
##   adj. R-squared              0.0        0.0        0.0        0.0        0.0   
##   sigma                       0.2        0.2        0.2        0.2        0.2   
##   F                          19.0       66.9       50.4       96.3       81.9   
##   p                           0.0        0.0        0.0        0.0        0.0   
##   Log-likelihood           -387.8     -307.0     -306.7     -169.8     -164.8   
##   Deviance                  924.8      914.9      914.8      898.3      897.7   
##   AIC                       783.6      624.0      625.3      353.5      345.6   
##   BIC                       814.1      662.1      671.0      406.9      406.5   
##   N                       14999      14999      14999      14999      14999     
## ================================================================================

Análise Multivariada

Discuta sobre os relacionamentos observados nesta parte da investigação. Quais atributos que fortaleceram os demais na observação das variáveis de interesse?

Quando o nível de satisfação de todo o grupo é análisado fica evidente uma distribuição bem diferente entre os que permanecem na empresa e os que saem. Os colaboradores que ficaram tem uma satisfação de regular a satisfeito, com um volume pequeno de colaboradores insatisfeitos. Entre os que saíram o grupo de insatisfeitos é o maior, demonstrando a correlação observada entre elas, mas não é possível afirmar que a insatisfação seja a causa de uma demissão por exemplo.

Interações surpreendentes e/ou interessantes foram encontradas entre os atributos?

OPCIONAL: Modelos foram criados usando este conjunto de dados? Discuta sobre os pontos fortes e as limitações do seu modelo.

Sim, foram criados dois modelos, um para left e outro para satisfaction_level.

No 1º foi criado um modelo linear de regressão para verificar a relação entre left e as variáveis satisfaction_level, time_spend_company, average_montly_hours, number_project. As variáveis foram selecionadas com base no valor de correlação encontrada entre elas. O resultado recebido foi um pouco decepcionante porque o r² mesmo ajustado só consegue explicar 20% da variável dependente left. Outro valor a ser observado pelo modelo é que há uma alta significancia entre as variáveis demonstrado pelo valor de p=0.

No 2º modelo o objetivo do modelo linear de regressão foi relacionar o nível de satisfação com a outras variáveis. Se não estar satisfeito pode estar relacionado, sem ser a causa, com a saída do funcionário, então o que poderia estar relacionado com a baixa satisfação dele? No modelo criado com a faixa de salário, o tempo trabalhado na empresa e a média mensal de horas trabalhadas tem o menor valor de r²=0, e as variáveis com o número de projetos trabalhados e a existência de promoção nos ultimos anos demonstraram uma correlação baixa de ionado com a baixa satisfação dele? No modelo criado a nota da última avaliação, o tempo trabalhado na empresa e a média mensal de horas trabalhadas tem um valor de r²=0.1.


Gráficos Finais e Sumário

Primeiro Gráfico

Os funcionários que mais trabalham são os mais bem pagos?

## Warning: Removed 130 rows containing missing values (geom_point).

Para minha surpresa, não. Entre os que não fazem mais parte da empresa, os com alto salário trabalharam em menos projetos e obtiveram uma nota baixa na avaliação. Os com boa nota na avaliação (acima de 0.7) trabalharam em mais de 4 projetos. Os com nota inferior a 0.6 trabalharam em sua maioria em 2 projetos. Os contratados tem uma distribuição mais uniforme da satisfação e a maior parte trabalha de 3 a 5 projetos.

Segundo Gráfico

Descrição do Segundo Gráfico

Terceiro Gráfico

Intereçã

n <- nrow(hr)
idx <- sample(n, n * .66)

# Make a few modications
hr %>% 
  mutate(
    left = factor(left, labels = c("Remain", "Left")),
    salary = ordered(salary, c("low", "medium", "high"))
  ) -> 
  d

train <- d[idx, ]
test <- d[-idx, ]
tree <- rpart(left ~ ., data = train)

res <- predict(tree, test)

auc(as.numeric(test$left) - 1, res[, 2])
## Area under the curve: 0.9694

The AUC has an important statistical property: the AUC of a classifier is equivalent to the probability that the classifier will rank a randomly chosen positive instance higher than a randomly chosen negative instance. [Fawcett]

rpart.plot(tree, type = 2, fallen.leaves = F, cex = 1, extra = 2)


Reflexão

Maps with r Kaggle - HR analytcs